home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / pcmag / vol7n22.arc / QWRITE.C < prev    next >
C/C++ Source or Header  |  1988-07-18  |  2KB  |  71 lines

  1. /* qwrite.c
  2.  */
  3.  
  4.  
  5. int    qwrite(int row, int col, char attrib, char *string)
  6. {
  7.    extern int far *scrptr;
  8.    int far *farptr;
  9.    register int j;
  10.  
  11.    row *= 80;  /* reset row for offset into video buffer */
  12.  
  13.    row += col; /* add column offset to get to first byte */
  14.  
  15.    if(!string[0])  /* if no bytes to be written, return */
  16.        return row;
  17.  
  18.    farptr = scrptr + row;
  19.    if( scrptr == (int far *)0xb8000000)
  20.        WaitForRetrace();
  21.  
  22.        /* put attribute into DH and while not end of string */
  23.    for( j = 0, _DH = attrib; string[j]; j++)
  24.    {
  25.        _DL =  string[j];   /* put character into DL */
  26.        farptr[j] = _DX;    /* poke them into the buffer */
  27.    }
  28.    return row;
  29. }
  30.  
  31. #ifdef OLD
  32. WaitForRetrace()
  33. {
  34.    _DX = 0x3da;                        /* get address of video port */
  35.    while(( inportb(_DX) & 8) != 8);    /* wait if retrace in progress */
  36.    while(( inportb(_DX) & 8) == 8);    /* wait for next retrace */
  37. }
  38. #endif
  39. WaitForRetrace()
  40. {
  41.    _DX = 0x3da;                    /* get address of video port */
  42.    while(!( inportb(_DX) & 8));    /* wait if retrace in progress */
  43.    while(( inportb(_DX) & 8));     /* wait for next retrace */
  44. }
  45. int far *scrptr;
  46. Init_scrptr()
  47. {
  48.    if( peekb(0x40, 0x49) == 0x7)       /* test for mono */
  49.        scrptr = (int far *)0xb0000000;/* set pointer to mono screen buffer */
  50.    else
  51.        scrptr = (int far *)0xb8000000;/* set pointer to color screen buffer */
  52. }
  53.  
  54. main()
  55. {
  56.    int i,j;
  57.  
  58.    Init_scrptr();
  59.  
  60.    for( i = j = 0; i < 24; i++, j++)
  61.        qwrite(i,j,0x7, "This is normal video ");
  62.    getch();
  63.    for( i = j = 0; i < 24; i++, j++)
  64.        qwrite(i,j,0x70,"This is reverse video");
  65.    getch();
  66.    for( i = j = 0; i < 24; i++, j++)
  67.        qwrite(i,j,0x7, "This is normal video ");
  68.  
  69. }
  70.  
  71.